﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Procenge.PortalVendas.Models;

namespace Procenge.PortalVendas.Models
{
    public class ModelPedido
    {
        private MORDataContext contexto;

        public ModelPedido() {

            this.contexto = new MORDataContext();
            this.Produtos = new List<Produto>();
        
        }

        public List<Produto> Produtos { get; set; }

        public IQueryable<Pedido> ListarPedidos() {

            var lista = from g in contexto.Pedidos
                        select g;

            return lista;
        
        }

        public void Salvar() {

            this.contexto.SubmitChanges();
        
        }

        public void CriarPedido(Pedido pedido) {

            this.contexto.Pedidos.InsertOnSubmit(pedido);
            this.Salvar();
        
        }


        public Pedido BuscarPedidoCodigo(int codigo) {

           Pedido pedido = this.contexto.Pedidos.Single(a => a.codCompra == codigo);
           return pedido;
        
        }

        public void RemoverPedido(int codigo) {

            Pedido pedido = this.BuscarPedidoCodigo(codigo);
            this.contexto.Pedidos.DeleteOnSubmit(pedido);
            this.Salvar();
        
        }

        public void InserirProduto(Produto produto) {

            this.Produtos.Add(produto);

        }

        public void RemoverProduto(Produto produto) {

            this.RemoverProduto(produto.codigo);
        
        }

        public void RemoverProduto(int codigo) {

            bool removeu = false;
            for (int i = 0; i < this.Produtos.Count; i++)
            {
                if (this.Produtos[i].codigo == codigo)
                {
                    this.Produtos.Remove(this.Produtos[i]);
                    removeu = true;
                    break;
                }
            }

            if (!removeu) {

                throw new NullReferenceException();
            
            }
        
        }

        public decimal Checkout() {

            decimal valorTotal = 0;

            foreach (Produto produto in Produtos) {

                valorTotal = valorTotal + (decimal)produto.preco;
            
            }

            return valorTotal;
        
        }

    }
}